Add a GdkSurface::parent property
authorMatthias Clasen <mclasen@redhat.com>
Wed, 8 May 2019 04:36:59 +0000 (04:36 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 May 2019 20:25:15 +0000 (20:25 +0000)
gdk/gdksurface.c
gdk/wayland/gdksurface-wayland.c

index 651896b34babaf4057046f4d62d162a717b57f48..ee337c8a2e1f4d27689b379cc1c348e22e3ef2d4 100644 (file)
@@ -79,6 +79,7 @@ enum {
   PROP_0,
   PROP_CURSOR,
   PROP_DISPLAY,
+  PROP_PARENT,
   PROP_FRAME_CLOCK,
   PROP_STATE,
   PROP_MAPPED,
@@ -437,6 +438,13 @@ gdk_surface_class_init (GdkSurfaceClass *klass)
                            GDK_TYPE_DISPLAY,
                            G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
 
+  properties[PROP_PARENT] =
+      g_param_spec_object ("parent",
+                           P_("Parent"),
+                           P_("Parent surface"),
+                           GDK_TYPE_SURFACE,
+                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+
   properties[PROP_FRAME_CLOCK] =
       g_param_spec_object ("frame-clock",
                            P_("Frame Clock"),
@@ -639,6 +647,10 @@ gdk_surface_set_property (GObject      *object,
       g_assert (surface->display != NULL);
       break;
 
+    case PROP_PARENT:
+      surface->parent = g_value_dup_object (value);
+      break;
+
     case PROP_FRAME_CLOCK:
       gdk_surface_set_frame_clock (surface, GDK_FRAME_CLOCK (g_value_get_object (value)));
       break;
@@ -671,6 +683,10 @@ gdk_surface_get_property (GObject    *object,
       g_value_set_object (value, surface->display);
       break;
 
+    case PROP_PARENT:
+      g_value_set_object (value, surface->parent);
+      break;
+
     case PROP_FRAME_CLOCK:
       g_value_set_object (value, surface->frame_clock);
       break;
index beea0dcdcd6818e3e4795dcb05b7c44ff21a372b..b3dafbaf4ff6bf6ed73392434fa37a9bb5be6b10 100644 (file)
@@ -517,6 +517,7 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
 
   surface = g_object_new (GDK_TYPE_WAYLAND_SURFACE,
                           "display", display,
+                          "parent", parent,
                           "frame-clock", frame_clock,
                           NULL);
 
@@ -534,7 +535,6 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
     }
 
   surface->surface_type = surface_type;
-  surface->parent = parent;
   surface->x = x;
   surface->y = y;
   surface->width = width;